'''
Created on 23/11/2013

@author: nicolas
'''

import math

import pylab as p

def generar_senal(A, L):
    senal = []
    for i in range(L):
        if(i < L / 2): 
            senal.append(A)
        else:
            senal.append(-A)
                
    return senal


def modular_bits_en_bpsk(B, alpha_0, alpha_1, A, L):
    
    X = []
    M = len(B)  # Cantidad de bits a modular.
    
    # Generamos cada muestra de la senal modulada
    modulado = generar_senal(A, L)
    
    # Para todos los simbolos.
    for k in range(0, M):

        # Aplico dezplazamiento de fase
        if(B[k] == 0):
            X_K = (p.roll(modulado, int(round(alpha_0 * L / (2 * math.pi))))).tolist()
        else:
            X_K = (p.roll(modulado, int(round(alpha_1 * L / (2 * math.pi))))).tolist()
            
        # Agrego el nuevo tramo de senal al final 
        X = X + X_K
        
    return X
